<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Numerical Definitions</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="GLib Reference Manual">
<link rel="up" href="glib-fundamentals.html" title="GLib Fundamentals">
<link rel="prev" href="glib-Byte-Order-Macros.html" title="Byte Order Macros">
<link rel="next" href="glib-Miscellaneous-Macros.html" title="Miscellaneous Macros">
<meta name="generator" content="GTK-Doc V1.17 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="glib-Byte-Order-Macros.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="glib-fundamentals.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GLib Reference Manual</th>
<td><a accesskey="n" href="glib-Miscellaneous-Macros.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#glib-Numerical-Definitions.synopsis" class="shortcut">Top</a>
                   | 
                  <a href="#glib-Numerical-Definitions.description" class="shortcut">Description</a>
</td></tr>
</table>
<div class="refentry">
<a name="glib-Numerical-Definitions"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="glib-Numerical-Definitions.top_of_page"></a>Numerical Definitions</span></h2>
<p>Numerical Definitions — mathematical constants, and floating point decomposition</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="glib-Numerical-Definitions.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
#include &lt;glib.h&gt;

#define             <a class="link" href="glib-Numerical-Definitions.html#G-IEEE754-FLOAT-BIAS:CAPS" title="G_IEEE754_FLOAT_BIAS">G_IEEE754_FLOAT_BIAS</a>
#define             <a class="link" href="glib-Numerical-Definitions.html#G-IEEE754-DOUBLE-BIAS:CAPS" title="G_IEEE754_DOUBLE_BIAS">G_IEEE754_DOUBLE_BIAS</a>
union               <a class="link" href="glib-Numerical-Definitions.html#GFloatIEEE754" title="union GFloatIEEE754">GFloatIEEE754</a>;
union               <a class="link" href="glib-Numerical-Definitions.html#GDoubleIEEE754" title="union GDoubleIEEE754">GDoubleIEEE754</a>;


#define             <a class="link" href="glib-Numerical-Definitions.html#G-E:CAPS" title="G_E">G_E</a>
#define             <a class="link" href="glib-Numerical-Definitions.html#G-LN2:CAPS" title="G_LN2">G_LN2</a>
#define             <a class="link" href="glib-Numerical-Definitions.html#G-LN10:CAPS" title="G_LN10">G_LN10</a>
#define             <a class="link" href="glib-Numerical-Definitions.html#G-PI:CAPS" title="G_PI">G_PI</a>
#define             <a class="link" href="glib-Numerical-Definitions.html#G-PI-2:CAPS" title="G_PI_2">G_PI_2</a>
#define             <a class="link" href="glib-Numerical-Definitions.html#G-PI-4:CAPS" title="G_PI_4">G_PI_4</a>
#define             <a class="link" href="glib-Numerical-Definitions.html#G-SQRT2:CAPS" title="G_SQRT2">G_SQRT2</a>
#define             <a class="link" href="glib-Numerical-Definitions.html#G-LOG-2-BASE-10:CAPS" title="G_LOG_2_BASE_10">G_LOG_2_BASE_10</a>
</pre>
</div>
<div class="refsect1">
<a name="glib-Numerical-Definitions.description"></a><h2>Description</h2>
<p>
GLib offers mathematical constants such as <a class="link" href="glib-Numerical-Definitions.html#G-PI:CAPS" title="G_PI"><span class="type">G_PI</span></a> for the value of pi;
many platforms have these in the C library, but some don't, the GLib
versions always exist.
</p>
<p>
The <a class="link" href="glib-Numerical-Definitions.html#GFloatIEEE754" title="union GFloatIEEE754"><span class="type">GFloatIEEE754</span></a> and <a class="link" href="glib-Numerical-Definitions.html#GDoubleIEEE754" title="union GDoubleIEEE754"><span class="type">GDoubleIEEE754</span></a> unions are used to access the
sign, mantissa and exponent of IEEE floats and doubles. These unions are
defined as appropriate for a given platform. IEEE floats and doubles are
supported (used for storage) by at least Intel, PPC and Sparc. See
<a class="ulink" href="http://en.wikipedia.org/wiki/IEEE_float" target="_top">IEEE 754-2008</a>
for more information about IEEE number formats.
</p>
</div>
<div class="refsect1">
<a name="glib-Numerical-Definitions.details"></a><h2>Details</h2>
<div class="refsect2">
<a name="G-IEEE754-FLOAT-BIAS:CAPS"></a><h3>G_IEEE754_FLOAT_BIAS</h3>
<pre class="programlisting">#define G_IEEE754_FLOAT_BIAS (127)
</pre>
<p>
The bias by which exponents in single-precision floats are offset.
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-IEEE754-DOUBLE-BIAS:CAPS"></a><h3>G_IEEE754_DOUBLE_BIAS</h3>
<pre class="programlisting">#define G_IEEE754_DOUBLE_BIAS (1023)
</pre>
<p>
The bias by which exponents in double-precision floats are offset.
</p>
</div>
<hr>
<div class="refsect2">
<a name="GFloatIEEE754"></a><h3>union GFloatIEEE754</h3>
<pre class="programlisting">union _GFloatIEEE754
{
  gfloat v_float;
  struct {
    guint mantissa : 23;
    guint biased_exponent : 8;
    guint sign : 1;
  } mpn;
};
</pre>
<p>
The <a class="link" href="glib-Numerical-Definitions.html#GFloatIEEE754" title="union GFloatIEEE754"><span class="type">GFloatIEEE754</span></a> and <a class="link" href="glib-Numerical-Definitions.html#GDoubleIEEE754" title="union GDoubleIEEE754"><span class="type">GDoubleIEEE754</span></a> unions are used to access the sign,
mantissa and exponent of IEEE floats and doubles. These unions are defined
as appropriate for a given platform. IEEE floats and doubles are supported
(used for storage) by at least Intel, PPC and Sparc.
</p>
</div>
<hr>
<div class="refsect2">
<a name="GDoubleIEEE754"></a><h3>union GDoubleIEEE754</h3>
<pre class="programlisting">union _GDoubleIEEE754
{
  gdouble v_double;
  struct {
    guint mantissa_low : 32;
    guint mantissa_high : 20;
    guint biased_exponent : 11;
    guint sign : 1;
  } mpn;
};
</pre>
<p>
The <a class="link" href="glib-Numerical-Definitions.html#GFloatIEEE754" title="union GFloatIEEE754"><span class="type">GFloatIEEE754</span></a> and <a class="link" href="glib-Numerical-Definitions.html#GDoubleIEEE754" title="union GDoubleIEEE754"><span class="type">GDoubleIEEE754</span></a> unions are used to access the sign,
mantissa and exponent of IEEE floats and doubles. These unions are defined
as appropriate for a given platform. IEEE floats and doubles are supported
(used for storage) by at least Intel, PPC and Sparc.
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-E:CAPS"></a><h3>G_E</h3>
<pre class="programlisting">#define G_E     2.7182818284590452353602874713526624977572470937000
</pre>
<p>
The base of natural logarithms.
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-LN2:CAPS"></a><h3>G_LN2</h3>
<pre class="programlisting">#define G_LN2   0.69314718055994530941723212145817656807550013436026
</pre>
<p>
The natural logarithm of 2.
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-LN10:CAPS"></a><h3>G_LN10</h3>
<pre class="programlisting">#define G_LN10  2.3025850929940456840179914546843642076011014886288
</pre>
<p>
The natural logarithm of 10.
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-PI:CAPS"></a><h3>G_PI</h3>
<pre class="programlisting">#define G_PI    3.1415926535897932384626433832795028841971693993751
</pre>
<p>
The value of pi (ratio of circle's circumference to its diameter).
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-PI-2:CAPS"></a><h3>G_PI_2</h3>
<pre class="programlisting">#define G_PI_2  1.5707963267948966192313216916397514420985846996876
</pre>
<p>
Pi divided by 2.
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-PI-4:CAPS"></a><h3>G_PI_4</h3>
<pre class="programlisting">#define G_PI_4  0.78539816339744830961566084581987572104929234984378
</pre>
<p>
Pi divided by 4.
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-SQRT2:CAPS"></a><h3>G_SQRT2</h3>
<pre class="programlisting">#define G_SQRT2 1.4142135623730950488016887242096980785696718753769
</pre>
<p>
The square root of two.
</p>
</div>
<hr>
<div class="refsect2">
<a name="G-LOG-2-BASE-10:CAPS"></a><h3>G_LOG_2_BASE_10</h3>
<pre class="programlisting">#define G_LOG_2_BASE_10		(0.30102999566398119521)
</pre>
<p>
Multiplying the base 2 exponent by this number yields the base 10 exponent.
</p>
</div>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.17</div>
</body>
</html>